// 规定在一个单位时间内，只能触发一次函数。
// 如果这个单位时间内触发多次函数，只有一次生效。
/**
 * 手写节流
 * @param {function} fun 
 * @param {number} time 
 * @returns 
 */
function throttled(fn, delay = 500) {
    let oldtime = Date.now()
    return function (...args) {
        let newtime = Date.now()
        if (newtime - oldtime >= delay) {
            fn.apply(null, args)
            oldtime = Date.now()
        }
    }
}

// 定时器写法
function throttle(fn, timeout) {
	let timer;
	return function (...arg) {
		if (timer) return;
		timer = setTimeout(() => {
			fn.apply(this, arg);
			timer = null;
		}, timeout);
	};
}